#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 设置根节点的名字
    ui->treeWidget->setHeaderLabel("数据集");

    // 新增顶层节点
    QTreeWidgetItem* item1 = new QTreeWidgetItem();
    // 每个节点都可以设置多个列，这里仅设一列
    item1->setText(0, "子数据1");
    // 添加到顶层节点中.
    ui->treeWidget->addTopLevelItem(item1);

    // 添加一些子节点
    QTreeWidgetItem* item1_1 = new QTreeWidgetItem();
    item1_1->setText(0, "项目1");
    item1->addChild(item1_1);
}

Widget::~Widget()
{
    delete ui;
}

// 添加到顶层
void Widget::on_pushButton_addToTop_clicked()
{
    QString text = ui->lineEdit_input->text(); // 获取输入框内容

    QTreeWidgetItem* item = new QTreeWidgetItem(); // 构造一个QTreeWidgetItem
    item->setText(0, text);
    // 添加到顶层节点
    ui->treeWidget->addTopLevelItem(item);
}

// 添加到选中元素
void Widget::on_pushButton_addToSelect_clicked()
{
    // 获取当前选中的节点
    QTreeWidgetItem* currentItem = ui->treeWidget->currentItem();
    if (currentItem == nullptr) return;

    QString text = ui->lineEdit_input->text(); // 获取输入框的内容

    QTreeWidgetItem* item = new QTreeWidgetItem(); // 构造一个 QTreeWidgetItem
    item->setText(0, text);

    currentItem->addChild(item); // 插入到选中节点的子节点中
}

void Widget::on_pushButton_deleteSelect_clicked()
{
    // 获取选中元素
    QTreeWidgetItem* currentItem = ui->treeWidget->currentItem();
    if (currentItem == nullptr) {
        return;
    }

    // 删除选中的元素, 要先获取父元素
    QTreeWidgetItem* parent = currentItem->parent();
    if (parent == nullptr) {
        // 顶层元素
        int index = ui->treeWidget->indexOfTopLevelItem(currentItem);
        ui->treeWidget->takeTopLevelItem(index);
    } else {
        // 普通元素
        parent->removeChild(currentItem);
    }
}
